package net.domor.stock.commons;

import java.util.List;

/**
 * Created by 汪国成 on 2016/10/11.
 */
public interface BaseDao<T> {

    /**
     * 根据实体中的属性值进行查询
     */
    List<T> select(T record);

    /**
     * 根据主键字段进行查询
     */
    T selectByPrimaryKey(Object key);

    /**
     * 查询全部结果
     */
    List<T> selectAll();

    /**
     * 根据实体中的属性进行查询，只能有一个返回值，有多个结果是抛出异常
     */
    T selectOne(T record);

    /**
     * 根据实体中的属性查询总数
     */
    int count(T record);

    /**
     * 保存一个实体，null的属性也会保存，不会使用数据库默认值
     */
    int insert(T record);

    /**
     * 保存一个实体，null的属性不会保存，会使用数据库默认值
     */
    int insertSelective(T record);

    /**
     * 根据主键更新实体全部字段，null值会被更新
     */
    int updateByPrimaryKey(Object key);

    /**
     * 根据主键更新属性不为null的值
     */
    int updateByPrimaryKeySelective(T record);

    /**
     * 根据主键字段进行删除，方法参数必须包含完整的主键属性
     */
    int deleteByPrimaryKey(Object key);
}
